import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'
// import Child from './components/Child.vue'

// import './assets/main.css'

//  Vue框架的底层原理(双向数据绑定).
//  Vue框架的底层主要是借助数据劫持和发布/订阅模式实现的.
//  数据劫持, Vue会通过内部的set方法,get方法监听数据的操作/改变( Vue2通过Object.defineProperty完成数据劫持, Vue3通过Proxy完成数据劫持 ), 一旦数据发生改变会立即通过所绑定的更新函数完成页面更新.
//  发布/订阅模式 , 在组件模板编译时会收集所有绑定数据的标签和绑定的数据, 同时会生成订阅对象并且会绑定更新函数. 将订阅对象添加到发布者中. 当发布者发布一个更新通知,会通知所有已添加的订阅者调用更新函数更新页面.

const app = createApp(App)

//注册全局组件
// app.component('Child',Child);

app.use(createPinia())
app.use(router)

app.mount('#app')
